package com.hp.modules.sys.service;

import com.hp.common.base.CommonPage;
import com.hp.common.upload.model.UploadResult;
import com.hp.common.upload.model.UploadTokenVo;
import com.hp.modules.sys.dto.SysUploadBizTypeParam;
import com.hp.modules.sys.dto.SysUploadRecordPageParam;
import com.hp.modules.sys.dto.SysUploadRecordParam;
import com.hp.modules.sys.entity.SysUploadRecord;

import java.util.List;

/**
 * 业务接口层
 * 上传记录
 */
public interface SysUploadRecordService {
    /**
     * 添加上传记录
     *
     * @param param
     * @return
     */
    int save(SysUploadRecordParam param);

    /**
     * 更新上传记录
     *
     * @param param
     * @return
     */
    int update(SysUploadRecordParam param);

    /**
     * 删除上传记录
     *
     * @param ids
     * @return
     */
    int remove(List<Long> ids);

    /**
     * 查询上传记录
     *
     * @param id
     * @return
     */
    SysUploadRecord get(Long id);

    /**
     * 分页查询上传记录列表
     *
     * @param param 分页查询参数
     * @return
     */
    CommonPage<SysUploadRecord> list(SysUploadRecordPageParam param);

    /**
     * 创建上传凭证
     *
     * @param param
     * @return
     */
    UploadTokenVo createUploadToken(SysUploadBizTypeParam param);

    /**
     * 回调处理
     *
     * @param callbackAuthHeader 请求头
     * @param callbackBody       请求正文
     * @return
     */
    UploadResult handleCallback(String callbackAuthHeader, String callbackBody);

    /**
     * 保存上传记录并返回主键
     *
     * @param uploadRecord
     * @return
     */
    int saveReturnId(SysUploadRecord uploadRecord);
}
